#include <stdio.h>
#include <stdlib.h>

int static_fac(int);
int auto_fac(int);
int main()
{
    int i;
    printf("static_fac:\n");
    for (i = 1; i <= 4; i++)
        printf("%d !=%d\n", i, static_fac(i));

    printf("auto_fac:\n");
    for (i = 1; i <= 4; i++)
        printf("%d !=%d\n", i, auto_fac(i));
    system("pause");
    return 0;
}
int static_fac(int n)
{
    // 静态变量只初始化一次，这就使它的初值总保持为上一个阶乘值，而不是1。
    static int f = 1;
    int i = 1;
    for (i = 1; i <= n; i++)
        f = f * i;
    return (f);
}

int auto_fac(int n)
{
    auto int f = 1;
    int i = 1;
    for (i = 1; i <= n; i++)
        f = f * i;
    return (f);
}